package org.x.user.service;

import java.lang.Boolean;
import java.lang.String;

import com.baomidou.mybatisplus.extension.service.IService;
import org.x.user.entity.SysPerm;
import org.x.user.entity.SysRole;
import org.x.user.entity.SysRolePerm;
import org.x.user.dto.PermDTO;
import org.x.user.dto.RoleDTO;
import org.x.user.dto.RolePermDTO;
import org.x.user.query.PermQuery;

/**
 * 权限管理
 *
 * @author 夏包包
 * @date 2025-03-08 13:39:03
 */
public interface PermService extends IService<SysPerm> {

    /**
     * 新增权限
     *
     * @param permDTO 权限管理DTO
     * @return
     */
    Boolean addPerm(PermDTO permDTO);

    /**
     * 删除权限
     *
     * @param permQuery 权限管理查询对象
     * @return
     */
    Boolean deletePerm(PermQuery permQuery);

    /**
     * 修改权限
     *
     * @param permDTO 权限管理DTO
     * @return
     */
    Boolean updatePerm(PermDTO permDTO);

    /**
     * 查询权限
     *
     * @param permId
     * @return  权限实体类
     */
    SysPerm getPerm(String permId);

    /**
     * 新增角色
     *
     * @param roleDTO 角色管理DTO
     * @return
     */
    Boolean addRole(RoleDTO roleDTO);

    /**
     * 删除角色
     *
     * @param roleDTO 角色管理DTO
     * @return
     */
    Boolean deleteRole(RoleDTO roleDTO);

    /**
     * 修改角色
     *
     * @param roleDTO 角色管理DTO
     * @return
     */
    Boolean updateRole(RoleDTO roleDTO);

    /**
     * 查询角色
     *
     * @param roleId
     * @return  角色实体类
     */
    SysRole getRole(String roleId);

    /**
     * 新增角色权限分配
     *
     * @param rolePermDTO 角色权限分配DTO
     * @return
     */
    Boolean addRolePerm(RolePermDTO rolePermDTO);

    /**
     * 删除角色权限分配
     *
     * @param rolePermDTO 角色权限分配DTO
     * @return
     */
    Boolean deleteRolePerm(RolePermDTO rolePermDTO);

    /**
     * 修改角色权限分配
     *
     * @param rolePermDTO 角色权限分配DTO
     * @return
     */
    Boolean updateRolePerm(RolePermDTO rolePermDTO);

    /**
     * 查询角色权限分配
     *
     * @param rolePermId
     * @return  角色权限分配实体类
     */
    SysRolePerm getRolePerm(String rolePermId);
}
